import mediaDevices from "./MediaDevicesUtils";

// 获取屏幕流
function getUserMediaStream() {
    return mediaDevices.getUserMedia({
        video: true,
        audio: true,
    });
}

// 成功获取屏幕流
function handleSuccess(stream, videoDom) {
    let video;
    // 这里的stream就是用户的媒体流，可以将其设置为video元素的源
    if (videoDom) {
        video = videoDom;
    } else {
        video = document.querySelector('video');
    }
    video.srcObject = stream;

    // 播放视频以显示用户媒体内容
    video.onloadedmetadata = () => {
        video.play();
    };
}

// 处理获取用户媒体流时出现的错误
function handleError(error) {
    console.error('获取用户媒体流失败:', error);
}

const userMedia = {
    getUserMediaStream: getUserMediaStream,

    startUserMedia: (videoDom = null) => {
        // 检测浏览器是否支持用户媒体
        if (navigator.getDisplayMedia || navigator.mediaDevices.getDisplayMedia) {
            // 唤起用户媒体申请
            getUserMediaStream().then(
                (stream) => {
                    handleSuccess(stream, videoDom)
                }
            ).catch(handleError);
        } else {
            alert('您的浏览器不支持屏幕共享');
        }
    }
}

export default userMedia;
